/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.pucp.sigepa.simulacion.nucleo;

import com.mysema.query.jpa.impl.JPAQuery;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.QAeropuertoSim;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.QAvionSim;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.QItinerarioSim;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.QPaqueteSim;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.QPronosticoSim;
import pe.edu.pucp.sigepa.recocidosimulado.Modelo.QVueloSim;

/**
 *
 * @author carloslengua
 */
public class NucleoSimuladorPruebas {
    
    public void prueba0_LlamadaProcedimiento() {

        EntityManager em = Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager();

        JPAQuery consulta = null;

        //Depuracion
        System.out.println("Limpiando area simulacion");

        em.getTransaction().begin();

        em.createNativeQuery("DELETE FROM AVION_SIM").executeUpdate();        
        em.createNativeQuery("DELETE FROM AEROPUERTO_SIM").executeUpdate();
        em.createNativeQuery("DELETE FROM VUELO_SIM").executeUpdate();
        em.createNativeQuery("DELETE FROM PRONOSTICO_SIM").executeUpdate();
        em.createNativeQuery("DELETE FROM ITINERARIO_SIM").executeUpdate();
        em.createNativeQuery("DELETE FROM PAQUETE_SIM").executeUpdate();

        em.getTransaction().commit();

        QAvionSim avionSim = QAvionSim.avionSim;
        QAeropuertoSim aeropuertoSim = QAeropuertoSim.aeropuertoSim;
        QVueloSim vueloSim = QVueloSim.vueloSim;
        QPronosticoSim pronosticoSim = QPronosticoSim.pronosticoSim;
        QItinerarioSim itinerarioSim = QItinerarioSim.itinerarioSim;
        QPaqueteSim paqueteSim = QPaqueteSim.paqueteSim;

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaAvionSim = consulta.from(avionSim).count();        
        
        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaAeropuertosSim = consulta.from(aeropuertoSim).count();

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaVuelosSim = consulta.from(vueloSim).count();


        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaPronosticoSim = consulta.from(pronosticoSim).count();

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaItinerarioSim = consulta.from(itinerarioSim).count();

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaPaqueteSim = consulta.from(paqueteSim).count();

        //Depuracion
        System.out.println("Validando que area se encuentre limpia...");
        System.out.println("cuentaAvionSim              = " + cuentaAvionSim);        
        System.out.println("cuentaAeropuertosSim        = " + cuentaAeropuertosSim);
        System.out.println("cuentaVuelosSim             = " + cuentaVuelosSim);
        System.out.println("cuentaPronosticoSim         = " + cuentaPronosticoSim);
        System.out.println("cuentaItinerarioSim         = " + cuentaItinerarioSim);
        System.out.println("cuentaPaqueteSim            = " + cuentaPaqueteSim);

        if (!(cuentaAvionSim.equals(Long.valueOf(0))
                && cuentaAeropuertosSim.equals(Long.valueOf(0))
                && cuentaVuelosSim.equals(Long.valueOf(0))
                && cuentaPronosticoSim.equals(Long.valueOf(0))
                && cuentaItinerarioSim.equals(Long.valueOf(0))
                && cuentaPaqueteSim.equals(Long.valueOf(0)))) {

            System.out.println("ERROR: Limpieza sin exito... ABORTANDO");
            return;
        }

        System.out.println("Area limpia...");
        System.out.println("Probando ejecucion de procedimiento almacenado");

        //Llamada clave
        em.getTransaction().begin();

        List listaResultado = em.createNativeQuery("select volcado_simulacion()").getResultList();

        System.out.println("listaResultado = " + listaResultado);

        em.getTransaction().commit();

        //Depuracion
        System.out.println("Validando que area se encuentre cargada...");

        QAvionSim avionSim2 = new QAvionSim("avionSim2");        
        QAeropuertoSim aeropuertoSim2 = new QAeropuertoSim("aeropuertoSim2");
        QVueloSim vueloSim2 = new QVueloSim("vueloSim2");
        QPronosticoSim pronosticoSim2 = new QPronosticoSim("pronosticoSim2");
        QItinerarioSim itinerarioSim2 = new QItinerarioSim("itinerarioSim2");
        QPaqueteSim paqueteSim2 = new QPaqueteSim("paqueteSim2");

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaAvionSim2 = consulta.from(avionSim2).count();        

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaAeropuertosSim2 = consulta.from(aeropuertoSim2).count();

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaVuelosSim2 = consulta.from(vueloSim2).count();


        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaPronosticoSim2 = consulta.from(pronosticoSim2).count();

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaItinerarioSim2 = consulta.from(itinerarioSim2).count();

        consulta = new JPAQuery(
                Persistence.createEntityManagerFactory("pe.edu.pucp_motor-generador-rutas-RS2_jar_1.0-SNAPSHOTPU", System.getProperties())
                .createEntityManager());
        Long cuentaPaqueteSim2 = consulta.from(paqueteSim2).count();

        System.out.println("cuentaAvionSim2              = " + cuentaAvionSim2);
        System.out.println("cuentaAeropuertosSim2        = " + cuentaAeropuertosSim2);
        System.out.println("cuentaVuelosSim2             = " + cuentaVuelosSim2);
        System.out.println("cuentaPronosticoSim2         = " + cuentaPronosticoSim2);
        System.out.println("cuentaItinerarioSim2         = " + cuentaItinerarioSim2);
        System.out.println("cuentaPaqueteSim2            = " + cuentaPaqueteSim2);

        if (!(!cuentaAvionSim2.equals(Long.valueOf(0))  
                && !cuentaAeropuertosSim2.equals(Long.valueOf(0))
                && !cuentaVuelosSim2.equals(Long.valueOf(0))
                && cuentaPronosticoSim2.equals(Long.valueOf(0))
                && cuentaItinerarioSim2.equals(Long.valueOf(0))
                && cuentaPaqueteSim2.equals(Long.valueOf(0)))) {

            System.out.println("ERROR: Carga sin exito... ABORTANDO");
            return;
        }

        System.out.println("Area cargada exitosamente...");

        System.out.println("SALIENDO...");

    }    
    
}
